# 商业转载请联系作者获得授权，非商业转载请注明出处。
# For commercial use, please contact the author for authorization. For non-commercial use, please indicate the source.
# 协议(License)：署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
# 作者(Author)：
# 链接(URL)：http://www.ryuichi.tech/88.html#E_-_Colorful_Blocks
# 来源(Source)：

#include<bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define debug  freopen("in.txt","r",stdin),freopen("out.txt","w",stdout);
#define fs first
#define sc second
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 2e5+10;
const int mod = 998244353;
using namespace std;
 
ll N,M,K;
ll f[maxn],invf[maxn];
void init(int N){
    f[0] = invf[0] = f[1] = invf[1] = 1;
    for(int i=2;i<=N;i++) f[i]=f[i-1]*i%mod,invf[i]=(mod-mod/i)*invf[mod%i]%mod;
    for(int i=2;i<=N;i++) invf[i]=invf[i-1]*invf[i]%mod;
}
ll C(ll n,ll m){
    if(n == m || m == 0) return 1;
    if(n < m) return 0;
    return f[n]*invf[n-m]%mod*invf[m]%mod;
}
ll ksm(ll a,ll b){
    ll res = 1;
    while(b){
        if(b&1) res = res*a%mod;
        a = a*a%mod;
        b>>=1;
    }
    return res;
}
int main(){
    // debug;
    ios;
    init(maxn);
 
    cin>>N>>M>>K;
    ll ans = 0;
    for(int t = N-K;t<=N;t++){
        ans += C(N-1,t-1) * M % mod * ksm(M-1,t-1)%mod;
        ans %= mod;
    }
    cout<<ans<<'\n';
 
    return 0;
}
